﻿// Tischpreiskegeln
//
// vorgesehen für die FF Feichtenberg zur Unterstützung des alljährlich stattfindenen
// Tischpreiskegelns.
// 
// Autoren:
// Eder Philipp S0910438031
// Lutt Martin  S0910438076
// (FH Wels)
//
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace fff_preiskegeln
{
    public partial class frmSpielerAendern : Form
    {
        /// <summary>
        /// Verbindung zur Datenbank
        /// </summary>
        private dbVerbindung verbindung;
        /// <summary>
        /// ID der Person die ausgewählt worden ist, zum Ändern
        /// </summary>
        private int idperson;
        /// <summary>
        /// Speichert die ID's der ausgewählten Vereine in einem Array ab. Wird an das Fenster
        /// zur Vereinsauswahl weitergegeben.
        /// </summary>
        private int[] vereinsvorauswahl;
        /// <summary>
        /// Speichert die Schussfolge in einen Array ab. Wird zum Ändern an die Datenbank übergeben.
        /// </summary>
        private int[] schussfolge;
        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name="datenbank">Verbindungsdaten</param>
        public frmSpielerAendern(dbVerbindung datenbank)
        {
            InitializeComponent();
            this.verbindung = datenbank;
        }
        /// <summary>
        /// Schließt das aktuelle Fenster ohne zu Speichern
        /// </summary>
        private void btnabbrechen_Click(object sender, EventArgs e)
        {
            // Fenster schließen
            this.Close();
        }
        /// <summary>
        /// Überprüft ob ein Nachname und ein Vorname eingegeben wurden.
        /// Weiters wird die Postleitzahl auf 0 gesetzt falls keine eingegeben wurde.
        /// Die Daten der Person inklusive aller Schussfolgen werden in der Datenbank aktualisiert.
        /// Am Ende werden alle Anzeigeelemente im Fenster wieder auf geleert für weitere Änderungsvorgänge.
        /// </summary>
        private void btnspeichern_Click(object sender, EventArgs e)
        {
            if (tbxNachname.Text != "" && tbxVorname.Text != "")
            {
                // ----- Eingabefelder OK -----
                try
                {
                    int iPlz = 0;
                    if (tbxPlz.Text != "")
                    {
                        iPlz = Convert.ToInt32(tbxPlz.Text);
                    }
                    verbindung.PersonAktualisieren(
                        tbxNachname.Text, tbxVorname.Text, tbxStrasse.Text,
                        tbxHausNr.Text, iPlz, tbxOrt.Text, tbxNotiz.Text, idperson
                        );
                    int IDPerson = verbindung.IDPersonAbfragen(tbxNachname.Text, tbxVorname.Text, tbxStrasse.Text, tbxOrt.Text, tbxHausNr.Text, iPlz, tbxNotiz.Text);

                    VereinZuordnen();
                    verbindung.VereineAktualisieren(vereinsvorauswahl, IDPerson);


                    schussfolge = new int[5];
                    for (int i = 0; i < this.dgvSchussfolgen.Rows.Count; i++)
                    {
                        for (int j = 1; j < this.dgvSchussfolgen.Columns.Count - 1; j++)
                        {
                            schussfolge[j - 1] = Convert.ToInt32(this.dgvSchussfolgen.Rows[i].Cells[j].Value);
                        }

                        verbindung.SchussfolgenAktualisieren(schussfolge, Convert.ToInt32(this.dgvSchussfolgen.Rows[i].Cells[6].Value));
                    }

                    MessageBox.Show("Daten gespeichert !");
                    tbxNachname.Text = "";
                    tbxVorname.Text = "";
                    tbxHausNr.Text = "";
                    tbxStrasse.Text = "";
                    tbxPlz.Text = "";
                    tbxOrt.Text = "";
                    tbxNotiz.Text = "";
                    dgvVereine.DataSource = null;
                    dgvSchussfolgen.DataSource = null;
                    dgvVereine.Rows.Clear();
                    dgvVereine.Columns.Clear();
                    dgvVereine.Rows.Clear();
                    dgvVereine.Columns.Clear();
                    tbxnachnameeingabe.Text = "";
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Fehler");
                }
            }
            else
            {
                // ----- Eingabefelder Fehlerhaft -----
                MessageBox.Show("Eine oder mehrere Eingaben sind fehlerhaft!", "Eingabefehler");
            }
        }
        /// <summary>
        /// Sucht Spieler in der Datenbank der geändert werden soll.
        /// </summary>
        private void tbxnachnameeingabe_TextChanged(object sender, EventArgs e)
        {
            try
            {
                this.dgvauswahlspieler.DataSource = verbindung.SpielerSucheFamilienname(this.tbxnachnameeingabe.Text, "");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Fehler");
            }
        }
        /// <summary>
        /// Überprüft ob ein Spieler ausgewählt wurde.
        /// Wenn ja dann werden die Daten aus der Datenbank an die Anzeigeelemente im Fenster 
        /// übergeben.
        /// </summary>
        private void dgvauswahlspieler_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (this.dgvauswahlspieler.Rows[this.dgvauswahlspieler.CurrentCellAddress.Y].Cells[0].Value.ToString() == "")
            {
                MessageBox.Show("Sie haben keinen Spieler ausgewählt!");
            }
            else
            {
                try{
                idperson = Convert.ToInt32(this.dgvauswahlspieler.Rows[this.dgvauswahlspieler.CurrentCellAddress.Y].Cells[0].Value);
                tbxNachname.Text = verbindung.Familienname(idperson);
                tbxVorname.Text = verbindung.Vorname(idperson);
                tbxHausNr.Text = verbindung.HausNr(idperson);
                tbxStrasse.Text = verbindung.Strasse(idperson);
                tbxPlz.Text = verbindung.PLZ(idperson);
                tbxOrt.Text = verbindung.Ort(idperson);
                tbxNotiz.Text = verbindung.Sonstiges(idperson);
                dgvVereine.DataSource = verbindung.VereineVonEinerIDTable(idperson);
                dgvVereine.Columns[0].Visible = false;
                dgvSchussfolgen.DataSource = verbindung.AlleSchussfolgenVonEinerID(idperson);
                dgvSchussfolgen.Columns[6].Visible = false;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Fehler");
                }
            }
        }
        /// <summary>
        /// Schließt das aktuelle Fenster ohne zu Speichern
        /// </summary>
        private void btnCloseWindow_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        /// <summary>
        /// Schließt das aktuelle Fenster ohne zu Speichern
        /// </summary>
        private void btnclose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        /// <summary>
        /// Ruft das Fenster frmVereinsauswahl auf und übergibt die Verbindungsdaten und die 
        /// ausgewählten Vereine.
        /// Zeigt anschließend die ausgewählten Vereine im Fenster wieder an.
        /// </summary>
        private void btnneuerverein_Click(object sender, EventArgs e)
        {
            VereinZuordnen();
            frmVereinsauswahl verein = new frmVereinsauswahl(this.verbindung, vereinsvorauswahl);
            verein.ShowDialog();

            if (verein.DialogResult == DialogResult.OK)
            {
                string[,] vereine = verein.VereineAusgewaehlt();

                dgvVereine.DataSource = null;

                dgvVereine.Rows.Clear();
                dgvVereine.Columns.Clear();
                dgvVereine.Columns.Add("id", "ID");
                dgvVereine.Columns.Add("name", "Name");
                dgvVereine.Columns.Add("ort", "Ort");

                dgvVereine.Columns["name"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                dgvVereine.Columns["ort"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

                for (int i = 0; i < vereine.GetLength(0); i++)
                {
                    if (vereine[i, 0] != null)
                    {
                        dgvVereine.Rows.Add(vereine[i, 0], vereine[i, 1], vereine[i, 2]);
                    }
                }
            }
        }
        /// <summary>
        /// Speichert die ID's der Vereine in dem Array vereinsvorauswahl ab.
        /// </summary>
        private void VereinZuordnen()
        {
            vereinsvorauswahl = new int[this.dgvVereine.Rows.Count];
            for (int i = 0; i < this.dgvVereine.Rows.Count; i++)
            {
                vereinsvorauswahl[i] = Convert.ToInt32(this.dgvVereine.Rows[i].Cells[0].Value);
            }
        }


    }
}
